﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using TVH.Web.Code;
using TVH.Comum;

namespace TVH.Cadastro
{
    public partial class ListaUsuario : BasePage
    {
        Persistencia.PerUsuario persistencia = new Persistencia.PerUsuario();
        Persistencia.PerPredio persistenciaPredio = new Persistencia.PerPredio();
        protected void Page_Load(object sender, EventArgs e)
        {
            CarregarGrid();
            if (!IsPostBack)
            {
                CarregarCombos();
            }
            if (!IsPostBack) return;
        }

        private void CarregarCombos()
        {
            ddlPredio.DataSource = persistenciaPredio.ObterLista();
            ddlPredio.DataTextField = "Identificacao";
            ddlPredio.DataValueField = "ID";
            ddlPredio.DataBind();
        }


        public void btnBuscar_Click(object sender, EventArgs e)
        {
            CarregarGrid();
        }

        public void gridResultado_PageIndexChanging(object sender, GridViewPageEventArgs e)
        {
            (sender as GridView).PageIndex = e.NewPageIndex;
            (sender as GridView).DataBind();
        }

        public void gridResultado_RowDataBound(object sender, GridViewRowEventArgs e)
        {
            if (e.Row.RowType == DataControlRowType.DataRow)
            {
                var link = e.Row.FindControl("lnkExcluir");
                ((LinkButton)link).Attributes.Add("onclick", "javascript:return confirm('Confirmar exclusão?')");
            }
        }

        public void gridResultado_RowDeleting(object sender, GridViewDeleteEventArgs e)
        {
            try
            {
                persistencia.Excluir(new Entidade.Usuario() { Id = Convert.ToInt32(((GridView)sender).DataKeys[e.RowIndex].Value) });
                CarregarGrid();
                ExibirMensagemSucesso("Usuário excluído com sucesso!");
            }
            catch (Exception ex)
            {
                ExibirMensagemErro("Erro ao excluir usuário!", ex);
            }
        }


        public void gridResultado_SelectedIndexChanging(object sender, GridViewSelectEventArgs e)
        {
            hdnGridAction.Value = "Detalhar";
            hdnID.Value = ((GridView)sender).DataKeys[e.NewSelectedIndex].Value.ToString();
            Server.Transfer("~/Cadastro/Usuario.aspx", true);
        }


        public void gridResultado_RowEditing(object sender, GridViewEditEventArgs e)
        {
            hdnGridAction.Value = "Editar";
            hdnID.Value = ((GridView)sender).DataKeys[e.NewEditIndex].Value.ToString();
            Server.Transfer("~/Cadastro/Usuario.aspx", true);
        }

        private void CarregarGrid()
        {
            var result = persistencia.ObterLista(new Entidade.Usuario()
            {
                Nome = txtNome.Text,
                IdPredio = ddlPredio.SelectedValue == "0" ? null
                        : Convert.ToInt32(ddlPredio.SelectedValue).ToNullable()
            });
            result = result.OrderBy(x => x.Nome).ThenBy(x => x.Predio).ThenBy(x => x.Setor).ToList();
            gridResultado.DataSource = result;
            gridResultado.DataBind();
        }
    }
}